"use strict";

function Example(name) {
  // 必须只能通过new调用
  if (!(this instanceof Example)) {
    throw new TypeError(`Class constructor Example cannot be invoked 
    without 'new'`);
  }
  this.name = name;
}
// 原型上的属性是不能被枚举的
Object.defineProperty(Example.prototype, "func", {
  value: function () {
    // 方法不能使用new
    if (!(this instanceof Example)) {
      throw new TypeError(`func is not a constructor`);
    }
    console.log(this.name);
  },
  enumerable: false,
});
// Example.prototype.func = function () {
//   console.log(this.name);
// };
// new Example('quan').func()
// 1 必须只能通过new调用
// Example()
// 2 原型上的属性是不能被枚举的
// const quan = new Example("quan");
// for (const key in quan) {
//   console.log(key);
// }
// 3 方法不能使用new
const quan = new Example('quan')
new quan.func()
